package cz.cvut.fit.mi.par.b101.mgc;

/**
 * Třída <code>Node</code> reprezentuje uzel v hledané cestě.
 *
 * @author masekji4
 */
public class Node {

    private int point;
    private int level;
    private Node pred;
    private int length;
    
    /**
     * Vytvoří novou instanci třídy <code>Node</code>.
     *
     * @param point         index bodu v poli <code>points</code>
     * @param level         hloubka uzlu
     * @param pred          předcházející uzel cesty
     * @param length        délka cesty v tomto uzlu
     */
    public Node(int point, int level, Node pred, int length) {
        this.point = point;
        this.level = level;
        this.pred = pred;
        this.length = length;
    }

    /**
     * Vrátí index bodu v poli <code>points</code>.
     *
     * @return          index bodu
     */
    public int getPoint() {
        return point;
    }

    /**
     * Nastaví index bodu  v poli <code>points</code>.
     *
     * @param point     index bodu
     */
    public void setPoint(int point) {
        this.point = point;
    }

    /**
     * Vrátí hloubku uzlu.
     * 
     * @return          hloubka uzlu
     */
    public int getLevel() {
        return level;
    }

    /**
     * Nastaví hloubku uzlu.
     *
     * @param level     hloubka uzlu
     */
    public void setLevel(int level) {
        this.level = level;
    }

    /**
     * Vrátí předcházející uzel cesty.
     *
     * @return          předcházející uzel cesty
     */
    public Node getPred() {
        return pred;
    }

    /**
     * Nastaví předcházející uzel cesty.
     *
     * @param pred      předcházející uzel cesty
     */
    public void setPred(Node pred) {
        this.pred = pred;
    }

    /**
     * Vrátí délku cesty v tomto uzlu.
     *
     * @return          délka cesty v tomto uzlu
     */
    public int getLength() {
        return length;
    }

    /**
     * Nastaví délku cesty v tomto uzlu.
     * 
     * @param length    délka cesty v tomto uzlu
     */
    public void setLength(int length) {
        this.length = length;
    }

}
